home *** CD-ROM | disk | FTP | other *** search
/ Turn the Power On! 3 / Turn the Power On! HP Volume III (HP)(1995).ISO / copy_files next >
Text File  |  1995-10-03  |  1KB  |  70 lines

  1. #!/bin/ksh
  2.  
  3. #    Do a cp -R after checking for room on the destination
  4.  
  5. set -u
  6. PATH=$PATH:/etc
  7. PWD=`pwd`
  8. umask a=rwx
  9.  
  10. progname=`basename $0`
  11.  
  12. if [[ $# -ne 2 ]]
  13. then
  14.     echo "usage: $progname sourcedir targetdir" >&2
  15.     exit 1
  16. fi
  17.  
  18. source=$1
  19. target=$2
  20.  
  21. if [[ ! -d $source ]]
  22. then
  23.     echo "$progname: $source is not a readable directory" >&2
  24.     exit 2
  25. fi
  26.  
  27. if [[ -d $target ]]    # It's already there
  28. then
  29.     if [[ ! -w $target ]]
  30.     then
  31.         echo "$progname: $target is not writeable by you" >&2
  32.         exit 3
  33.     fi
  34. else    # Try making it; if it's a normal file this will fail
  35.     mkdir -p $target >/dev/null 2>&1
  36.     if [[ $? -ne 0 ]]
  37.     then
  38.         echo "$progname: cannot create target directory $target">&2
  39.         exit 4
  40.     fi
  41. fi
  42.  
  43. echo "Calculating space needed..."    # du is not terribly fast
  44. needed=`du -s $source | cut -f1`
  45.  
  46. #    Use devnm to resolve the destination drive, then df it.  df output
  47. #    for NFS mounts includes an extra colon so don't key on it.
  48.  
  49. echo "Calculating space available..."
  50.  
  51.  
  52. targetdev=`devnm $target | cut -d' ' -f1`
  53.  
  54.  
  55. available=`df $targetdev | cut -d')' -f2 | awk '{print $2}'`
  56.  
  57. if [[ $needed -gt $available ]]
  58. then
  59.     echo "$progname: not enough room to copy everything" >&2
  60.     exit 5
  61. fi
  62.  
  63. echo "Copying..."    # Don't go verbose so that error messages can be seen
  64. cd $source
  65. find ./* -print | cpio -pdlm $target    # no 'x', may not be root
  66. echo "$progname: complete"
  67.  
  68. exit 0
  69.  
  70.